﻿///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2023, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

#Область ПрограммныйИнтерфейс

// Открывает форму списка машиночитаемых доверенностей.
// 
// Параметры:
//  Отборы - см. ОтборыСпискаДоверенностей
//  ОповещениеОЗакрытии - ОписаниеОповещения - оповещение о закрытии формы списка доверенностей
//  Владелец - Форма - владелец открываемой формы
//
Процедура ОткрытьСписокМЧД(Отборы = Неопределено, ОповещениеОЗакрытии = Неопределено, Владелец = Неопределено) Экспорт
	
	ОткрытьФорму("Справочник.МашиночитаемыеДоверенности.ФормаСписка", Отборы, Владелец, Отборы,,,ОповещениеОЗакрытии);
	
КонецПроцедуры

// Конструктор отборов списка доверенностей.
// 
// Возвращаемое значение:
//  Структура - возможные отборы списка доверенностей:
//   * ОтборПоСостоянию - Строка
//   * Доверитель - Строка, ОпределяемыйТип.СторонаМЧД
//   * Представитель - Строка, ОпределяемыйТип.СторонаМЧД 
//   * ДоверенностиПоРоли - Строка
//   * ТолькоДействующие - Булево
//   * Полномочия - Массив из Строка - коды полномочий
//   * СертификатДоверителя - см. МашиночитаемыеДоверенностиФНС.ОтборДляДоверенностейПоСертификату
//   * СертификатПредставителя - см. МашиночитаемыеДоверенностиФНС.ОтборДляДоверенностейПоСертификату
//
Функция ОтборыСпискаДоверенностей() Экспорт
	Результат = Новый Структура;
	Результат.Вставить("ОтборПоСостоянию");
	Результат.Вставить("Доверитель");
	Результат.Вставить("Представитель");
	Результат.Вставить("ДоверенностиПоРоли");
	Результат.Вставить("ТолькоДействующие");
	Результат.Вставить("Полномочия");
	Результат.Вставить("СертификатДоверителя");
	Результат.Вставить("СертификатПредставителя");
	Возврат Результат;
КонецФункции

// Показывает форму создания машиночитаемой доверенности
// 
// Параметры:
//  ПараметрыФормы - см. ПараметрыСозданияМЧД
//  ОповещениеОЗавершении - ОписаниеОповещения
//
Процедура СоздатьМЧД(ПараметрыФормы, ОповещениеОЗавершении = Неопределено) Экспорт
	
	ОткрытьФорму("Справочник.МашиночитаемыеДоверенности.Форма.ФормаЭлемента", ПараметрыФормы, , , , , ОповещениеОЗавершении);
	
КонецПроцедуры

// Функция - Параметры создания МЧД
// 
// Возвращаемое значение:
//  Структура:
//   * Полномочия    - Массив из Строка - коды полномочий
//   * Доверитель    - ОпределяемыйТип.СторонаМЧД
//   * Представитель - ОпределяемыйТип.СторонаМЧД
// 
Функция ПараметрыСозданияМЧД() Экспорт
	
	Структура = Новый Структура;
	Структура.Вставить("Полномочия");
	Структура.Вставить("Доверитель");
	Структура.Вставить("Представитель");
	Возврат Структура;
	
КонецФункции

// Возвращает результат проверки доверенности.
// 
// Параметры:
//  Оповещение - ОписаниеОповещения - оповещение о результате выполнения:
//   Структура:
//    # Верна - Булево
//    # ТребуетсяПроверка - Булево
//    # ЕстьВсеПодписи - Булево - есть все подписи доверителей.
//    # Статус - ПеречислениеСсылка.СтатусыМЧД
//    # ЕстьВРеестреФНС - Булево
//    # ТекстОшибки - Строка - ошибки строкой
//    # ОписаниеОшибок - Структура - содержит ошибки выполнения проверок:
//      ## ОписаниеОшибки  - Строка - полное описание ошибки, когда оно возвращается строкой.
//      ## ЗаголовокОшибки - Строка - заголовок ошибки, который соответствует операции
//                                  когда операция одна (не заполнен, когда операций несколько).
//      ## Ошибки          - Массив из Структура:
//                            ### ЗаголовокОшибки   - Строка - заголовок ошибки, который соответствует операции
//                                  когда операций несколько (не заполнен, когда операция одна).
//                            ### Описание          - Строка - краткое представление ошибки.
//    # РезультатыПроверкиПодписей - Массив из Структура:
//     ## Верна - Булево
//     ## КомуВыданСертификат - Строка
//     ## ДатаПодписи - Дата
//     ## ИдентификаторПодписи - УникальныйИдентификатор
//     ## ТребуетсяПроверка - Булево
//     ## Соответствует -  Булево - подпись соответствует доверителю.
//     ## ТекстОшибки - Строка
//     ## ТекстОшибкиСоответствия - Строка
//     ## РезультатПроверки - Неопределено - если подпись не требовалось проверять или не удалось ее проверить.
//                         - см. ЭлектроннаяПодписьКлиентСервер.РезультатПроверкиПодписи
//  Доверенность - СправочникСсылка.МашиночитаемыеДоверенности
//  ИдентификаторФормы - УникальныйИдентификатор - используется при проверке подписей на клиенте.
//   Если не указан, подписи, требующие проверки, не будут проверены на клиенте.
//
Процедура ПроверитьДоверенность(Оповещение, Доверенность, ИдентификаторФормы = Неопределено) Экспорт
	
	МашиночитаемыеДоверенностиФНССлужебныйКлиент.ПроверитьДоверенность(Оповещение, Доверенность, ИдентификаторФормы);
	
КонецПроцедуры

#КонецОбласти